Блог им. badpidgin |Софт для просмотра структуры портфеля акций

Сим творением пользуюсь сам постоянно. Буду рад, если кому-то ещё пригодится.

Характеристики

  1. Написан на Python 3, в качестве графической библиотеки используется Tkinter
  2. Цену берёт из API Мосбиржи. Цена — это цена закрытия
  3. Имеется возможность посмотреть цену и структуру портфеля на любую дату в прошлом
  4. Есть возможность импортировать структуру портфеля со Смартлаба
  5. Редактирование портфеля производится с помощь любого текстового редактора

Скриншот окна программы:
Софт для просмотра структуры портфеля акций

Попробовать можно так:
git clone https://github.com/eenden/my_case_tk.git
cd my_case_tk
python view.py
Рекомендуется создать виртуальное окружение с помощью virtualenv и использовать его. Зависимости, как обычно, в файле requirements.txt

Блог им. badpidgin |Исторические данные с ММВБ (мой велосипед)

По мотивам поста https://smart-lab.ru/blog/616708.php

Вот и мой велосипед на питоне для получения котировок с Мосбиржи

from urllib import request, error
from json import loads
import pprint


class GetRawDataException(Exception):
	pass

class GetPricesException(Exception):
	pass

def get_prices(start_date: str, end_date: str, ticker: str) -> dict:
	"""
		Возвращает словарь: {дата:цена закрытия}
	"""
	req = 'https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/{}.json?from={}&till={}'.format(ticker, start_date, end_date)
	contents = get_raw_data(req)
	try:
		data = loads(contents)
		prices = {x[1] : x[11] for x in data['history']['data']}
		return(prices)		
	except Exception as err:
		raise GetPricesException(err)


def get_raw_data(req: str) -> str:
	"""
		Возвращает результат запроса к серверу Мосбиржи
	"""
	try:
		contents = request.urlopen(req).read()
		return(contents)
	except URLError as err:
		raise GetRawDataException(err)


try:
	prices = get_prices('2019-05-23', '2019-05-30', 'GAZP')
	pprint.pprint(prices)
except GetRawDataException as err:
	print('Error getting raw data: ', str(err))
except GetPricesException as err:
	print('Error parsing json: ', str(err))

Вывод данных происходит с помощью функции get_prices(). Механизм простой: формируется url для GET-запроса. Мосбиржа в ответ присылает json, из которого забираются нужные данные и выводятся на экран.

Есть и другие способы получения данных: yfinance, pandas-datareader и универсальный BeautifulSoup, ещё более универсальный Selenium. Но это уже совсем другая история...


....все тэги
UPDONW
Новый дизайн